package com.easy.cloud.web.component.core.service;

import cn.hutool.core.io.IoUtil;
import cn.hutool.json.JSONUtil;
import org.springframework.core.io.ClassPathResource;

import java.util.ArrayList;
import java.util.List;

/**
 * 初始化设置
 *
 * @author GR
 * @date 2021-4-15 13:23
 */
public interface IInitService {

    /**
     * 初始化
     */
    void init();

    /**
     * 初始化数据集
     *
     * @param path   JSON文件路径
     * @param tClass 目标对象
     * @return java.util.List<T>
     */
    default <T> List<T> initJsonToList(String path, Class<T> tClass) {
        try {
            // 读取JSON数据
            ClassPathResource pathResource = new ClassPathResource(path);
            // 读取系统菜单数据
            String sysMenuJsonStr = IoUtil.read(pathResource.getInputStream()).toString();
            return JSONUtil.toList(JSONUtil.parseArray(sysMenuJsonStr), tClass);
        } catch (Exception exception) {
            System.out.println("json to list init fail：" + exception.getMessage());
        }
        return new ArrayList<>();
    }

    /**
     * 初始化数据对象
     *
     * @param path   JSON文件路径
     * @param tClass 目标对象
     * @return T
     */
    default <T> T initJsonToBean(String path, Class<T> tClass) {
        try {
            // 读取JSON数据
            ClassPathResource pathResource = new ClassPathResource(path);
            // 读取系统菜单数据
            String sysMenuJsonStr = IoUtil.read(pathResource.getInputStream()).toString();
            return JSONUtil.toBean(sysMenuJsonStr, tClass);
        } catch (Exception exception) {
            System.out.println("json to bean init fail：" + exception.getMessage());
        }
        return null;
    }
}
